package com.ruoyi.rsikManage.MonitorPoint.service;

import java.util.HashMap;
import java.util.List;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.rsikManage.MonitorPoint.domain.TMonitorPoint;
import com.ruoyi.rsikManage.MonitorPoint.domain.TMonitorPointRequest;

/**
 * 设备Service接口
 *
 * @author sxygsj
 * @date 2024-11-29
 */
public interface ITMonitorPointService
{
    /**
     * 查询设备
     *
     * @param apeId 设备主键
     * @return 设备
     */
     TMonitorPoint selectTMonitorPointByApeId(String apeId);

    /**
     * 查询设备列表
     *
     * @param tMonitorPointRequest 设备
     * @return 设备集合
     */
     List<TMonitorPoint> selectTMonitorPointList(TMonitorPointRequest tMonitorPointRequest);

    /**
     * 新增设备
     *
     * @param tMonitorPoint 设备
     * @return 结果
     */
     int insertTMonitorPoint(TMonitorPoint tMonitorPoint);

    /**
     * 修改设备
     *
     * @param tMonitorPoint 设备
     * @return 结果
     */
     int updateTMonitorPoint(TMonitorPoint tMonitorPoint);

    /**
     * 修改设备
     *
     * @param tMonitorPoints 设备
     * @return 结果
     */
     int batchUpdateTMonitorPoint(List<TMonitorPoint> tMonitorPoints);

    /**
     * 批量删除设备
     *
     * @param apeIds 需要删除的设备主键集合
     * @return 结果
     */
     int deleteTMonitorPointByApeIds(String[] apeIds);

    /**
     * 删除设备信息
     *
     * @param apeId 设备主键
     * @return 结果
     */
     int deleteTMonitorPointByApeId(String apeId);

    /**
     * 查询监控点的状态统计信息。
     *
     * 该方法根据提供的请求参数查询并返回指定单位或多个单位的监控点状态统计信息。
     * 统计信息包括总监控点数、在线监控点数和离线监控点数。
     *
     * @param tMonitorPointRequest 包含查询条件的请求对象，可以包含以下字段：
     *                             - unitCodes: 单位代码列表（可选），用于筛选特定单位的监控点。
     *                             - unitCode: 单个单位代码（可选），用于筛选特定单位的监控点。
     *                             - 其他可能的查询条件（如时间范围、设备类型等）。
     * @return 返回一个包含监控点状态统计信息的 HashMap，键值对如下：
     *         - "totalMonitorCount": 总监控点数
     *         - "onlineMonitorCount": 在线监控点数
     *         - "offlineMonitorCount": 离线监控点数
     *
     * 注意：如果既没有提供 `unitCodes` 也没有提供 `unitCode`，则默认统计所有监控点的状态。
     */
    HashMap<String, Integer> getStatusCount(TMonitorPointRequest tMonitorPointRequest);

    HashMap<String, Integer> getTypeCount(TMonitorPointRequest tMonitorPointRequest);


}
